#include "reduce_sum_n_d.h"

using namespace ReduceSum;

extern "C" __global__ __aicore__ void reduce_sum(GM_ADDR x, GM_ADDR axes, GM_ADDR y, GM_ADDR workspace,
                                                 GM_ADDR tiling) {
    GET_TILING_DATA(tilingData, tiling);
    if (TILING_KEY_IS(101)) {
        ReduceSumND<float> op;
        op.Init(x, axes, y, &tilingData);
        op.Process();
    } else if (TILING_KEY_IS(201)) {
        ReduceSumND<half> op;
        op.Init(x, axes, y, &tilingData);
        op.Process();
    } else if (TILING_KEY_IS(301)) {
        ReduceSumND<int32_t> op;
        op.Init(x, axes, y, &tilingData);
        op.Process();
    } else if (TILING_KEY_IS(401)) {
        // ReduceSumND<int8_t> op;
        // op.Init(x, axes, y, &tilingData);
        // op.Process();
    }
}